package ljj.rollcall;

import android.content.Intent;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.IOException;
import java.io.InputStream;

//次代码用于实现随机点名和抽题功能并输出

public class Show_RollCall_Activity extends AppCompatActivity {
    private TextView sID;
    private TextView sname;
    private TextView showQuestion;
    private String getClassName;
    private Cursor cursor;
    private SQLiteDatabase db;
    private AssetManager assetManager;
    //用于存储assets文件下的所有文件名
    private String[] fileNames;
    //用于存储assets文件夹下的所有.txt文件名
    private String[] txtNames;
    //获取assets文件夹下的文件数量
    private int getNum;

    @Override
    protected void onCreate(Bundle saveInstanceState){
        super.onCreate(saveInstanceState);
        setContentView(R.layout.activity_show_rollcall);
        //获取intent
        Intent gIntent=getIntent();
        //获取来自activity_rollcall传递的class
        getClassName = gIntent.getStringExtra("class");
        //获取传递的Bundle
        Bundle bundle=getIntent().getExtras();
        //获取来自activity_rollcall传递的MaxRow
        final int MaxRow = bundle.getInt("MaxRow");
        //实例化dbHelper
        RollCall_OpenHelper dbHelper=new RollCall_OpenHelper(this, RollCall_OpenHelper.ROLLCALL,null,1);
        //获取数据库对象，以读写形式打开
        db=dbHelper.getWritableDatabase();
        //获取 学号 文本视图
        sID=(TextView)findViewById(R.id.studentId);
        //获取 姓名 文本视图
        sname=(TextView)findViewById(R.id.studentName);
        //获取 点名 按钮
        Button show_RollCall=(Button)findViewById(R.id.button_continue);
        //点名 控件的监听事件
        show_RollCall.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //在1-MaxRow间随机产生一个整数并赋给num
                    int num= (int)(Math.random()*MaxRow+1);
                    //初始化下标
                    int index=0;
                    //创建Cursor实例并存储查询结果
                    cursor=db.rawQuery("select * from studentinfo where  cname = ? ",new String[]{getClassName});
                    //获取记录行数并初始化大小
                    String[] id=new String[cursor.getCount()];
                    String[] name= new String[cursor.getCount()];
                    //当cursor指向下一行不为空时
                    while (cursor.moveToNext()){
                        //获取记录中字段sid的值赋给id的当前元素
                        id[index] = cursor.getString(cursor.getColumnIndex("sid"));
                        //获取记录中字段sname的值赋给name的当前元素
                        name[index] = cursor.getString(cursor.getColumnIndex("sname"));
                        //下标index+1
                        index++;
                    }
                    //设置 学号 的文本内容
                    sID.setText(id[num-1]);
                    //设置 姓名 的文本内容
                    sname.setText(name[num-1]);
                    //关闭游标
                    cursor.close();
                }
            });

        //获取 显示题目 的文本视图
        showQuestion = (TextView) findViewById(R.id.textQuestion);
        //获取 抽题 按钮
        Button getQuestion = (Button) findViewById(R.id.shwowQuestion);
        //按钮 抽题 的 监听事件
        getQuestion.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    try {
                        //获取AssetManager引用
                        assetManager = getAssets();
                        //存储asseets文件夹下的所有文件名
                        fileNames = assetManager.list("");
                    } catch (IOException e) {
                        //显示异常信息
                        e.printStackTrace();
                    }
                    //初始化 当前下标
                    int currentIndex=0;
                    //当文件名以.txt结尾
                    while (fileNames[currentIndex].endsWith(".txt")) {
                        //当前下标+1
                        currentIndex++;
                    }
                    //初始化txtNames 大小
                    txtNames = new String[currentIndex];
                    //初始化currentTXT,作为txtNames的下标
                    int currentTXT = 0;
                    //循环
                    for (int i=0;i<fileNames.length;i++) {
                        //fileNmaes当前下标的元素以.txt结尾
                        if (fileNames[i].endsWith(".txt")) {
                            //将fileNames当前元素赋给txtNames当前的元素
                            txtNames[currentTXT] = fileNames[i];
                            //currentTXT+1
                            currentTXT++;
                       }
                    }

                    //在txtNames的长度中产生一个随机数
                    getNum = (int) (Math.random() * txtNames.length);
                    try {
                        //根据随机数创建输入流 对象并打开对应的txt文件
                        InputStream is = assetManager.open(txtNames[getNum]);
                        //返回的实际可读字节数
                        int size = is.available();
                        //初始化缓冲区
                        byte[] buffer = new byte[size];
                        //读取缓冲区
                        is.read(buffer);
                        //关闭输入流
                        is.close();
                        //以UTF-8编码方式，将buffer赋给text
                        String text = new String(buffer, "UTF-8");
                        //设置 题目文本框 的文本内容
                        showQuestion.setText(text);
                    } catch (IOException e) {
                        //显示异常信息
                        e.printStackTrace();
                    }
                }
        });
    }


}
